#include <stdio.h>

//二维数组作为函数的参数
void Print(int (*a)[3])
{
     for(int i = 0; i < 3;i++) //行
    {
        for(int j = 0; j < 3;j++)  //列
        {
            printf("|%d %p|",*(*(a+i)+j),&a[i][j]);
        }
        printf("\n");
    }

}
int main()
{
    int a[][3] = { 
        {1,2,3},
        {4,5,6},
        {7,8,9}
    };
    //printf("%d")
    // 二维数组的遍历
    //  for(int i = 0; i < 3;i++) //行
    // {
    //     for(int j = 0;j < 3;j++)  //列
    //     {
    //         printf("%d ",a[i][j]);
    //     }
    //     printf("\n");
    // }

    // printf("%ld\n",sizeof(a));
    printf("%p %p %d\n",a,a+1,*(*(a+1)));
    printf("%p %p %d\n",a[0],a[0] + 1,*(a[0 ]+1));
    printf("%p %p %d\n",&a[0][0],&a[0][0] + 1,a[0][0]+1);



    // 指针数组 ：数组里的元素都是指针
    // int* p[3];
    // p[0] = a[0];
    // p[1] = a[1];
    // p[2] = a[2];
    // printf("%d\n",*(*(p+1)));

    //数组指针 ：指向数组的指针
    // int (*p)[2];
    // p = a;
    // printf("%d\n",**p);
    // printf("%d\n",*(*(p+1)));
    return 0;

}